function isLeapYear(year) {
  // 能被400整除的一定是闰年
  if (year % 400 === 0) {
    return true;
  }
  // 世纪非闰年 1900 年
  if (year % 100 === 0) {
    return false;
  }
  // 因为过滤了世纪非闰年,能被4整除的一定是闰年
  if (year % 4 === 0) {
    return true;
  }
  // 剩下的不是闰年
  return false;
}

function dayOfYear(year, month, day) {
  try {
    // 所有月份
    const daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    // 处理如果是闰年的2月
    if (isLeapYear(year)) {
      daysInMonth[1] = 29;
    }

    let dayCount = 0;

    // 把前面月份加起来
    for (let i = 0; i < month - 1; i++) {
      dayCount += daysInMonth[i];
    }

    // 把当月天数加起来
    dayCount += day;
    // 题目要的天数
    return dayCount;
  } catch (error) {
    console.log("error", error);
  }
}

// 测试 (假设年月日都是正确的情况,都是通过日期插件输入的)
console.log(dayOfYear(2016, 1, 3));
console.log(dayOfYear(2023, 12, 31));
console.log(dayOfYear(2024, 12, 31));
console.log(dayOfYear(2023, 3, 1));
console.log(dayOfYear(2000, 3, 1));
console.log(dayOfYear(2016, 2, 1));
